package leetcode;

/**
 * 判断回文数
 * @author ：徐梦轲
 * @date ：2022/5/19 0019 22:50
 */

public class Solution {
    //解法1：暴力解法
    public boolean isPalindrome1(int x) {
        //将整数转换为字符串进行比较
        String str = String.valueOf(x);
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {
                return false;
            }
        }
        return true;
    }

    //解法2：暴力解法
    public boolean isPalindrome2(int x) {
        //将整数转换为字符串，然后翻转字符串进行比较
        String str = String.valueOf(x);
        String str1 = new StringBuilder(str).reverse().toString();
        return str1.equals(str);
    }

    //解法3：数学进阶解法
    public boolean isPalindrome3(int x) {
        //通过多次取余、除法运算、得到数字首位与末位，判断数字首位和末位是否相同
        if (x < 0) {
            return false;
        }
        int num = 1;
        //判断x为几位数
        while(x / num >= 10) {
            num *= 10;
        }
        //依次判断数字首位和末位是否相同
        while(x > 0) {
            int left = x / num;
            int right = x % 10;
            if (left != right) {
                return false;
            }
            x = (x % num) / 10;
            num /=100;
        }
        return true;
    }

    //解法4：数学进阶巧妙解法
    //public boolean isPalindrome4(int x) 


}
